在部署Kubernetes之前一定要确保etcd、flannel、docker是正常运行的,否则先解决问题再继续。
一 生成证书
1 | mkdir -d /root/k8s/k8s-cert |
二 部署apiserver组件
下载github中server的二进制包:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.16.md#downloads-for-v1162
其中的下载地址被墙了,可以通过百度云盘备份的下载
链接: https://pan.baidu.com/s/1CkoME6ztfDeoj2XDnF0jzQ 提取码: vfy6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 mkdir /opt/kubernetes/{bin,cfg,ssl} -p
tar zxvf kubernetes-server-linux-amd64.tar.gz
cd kubernetes/server/bin
cp kube-apiserver kube-scheduler kube-controller-manager kubectl /opt/kubernetes/bin
# 创建token文件配置
# 第一列:随机字符串,自己可生成
# 第二列:用户名
# 第三列:UID
# 第四列:用户组
cat << EOF | tee /opt/kubernetes/cfg/token.csv
674c457d4dcf2eefe4920d7dbb6b0ddc,kubelet-bootstrap,10001,"system:kubelet-bootstrap"
EOF
# 创建apiserver配置文件
# --logtostderr 启用日志
# ---v 日志等级
# --etcd-servers etcd集群地址
# --bind-address 监听地址
# --secure-port https安全端口
# --advertise-address 集群通告地址
# --allow-privileged 启用授权
# --service-cluster-ip-range Service虚拟IP地址段
# --enable-admission-plugins 准入控制模块
# --authorization-mode 认证授权,启用RBAC授权和节点自管理
# --enable-bootstrap-token-auth 启用TLS bootstrap功能,后面会讲到
# --token-auth-file token文件
# --service-node-port-range Service Node类型默认分配端口范围
cat << EOF | tee /opt/kubernetes/cfg/kube-apiserver
KUBE_APISERVER_OPTS="--logtostderr=true \
--v=4 \
--etcd-servers=https://192.168.0.201:2379,https://192.168.0.211:2379,https://192.168.0.212:2379 \
--bind-address=192.168.0.201 \
--secure-port=6443 \
--advertise-address=192.168.0.201 \
--allow-privileged=true \
--service-cluster-ip-range=10.0.0.0/24 \
--enable-admission-plugins=NamespaceLifecycle,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota,NodeRestriction \
--authorization-mode=RBAC,Node \
--enable-bootstrap-token-auth \
--token-auth-file=/opt/kubernetes/cfg/token.csv \
--service-node-port-range=30000-50000 \
--tls-cert-file=/opt/kubernetes/ssl/server.pem \
--tls-private-key-file=/opt/kubernetes/ssl/server-key.pem \
--client-ca-file=/opt/kubernetes/ssl/ca.pem \
--service-account-key-file=/opt/kubernetes/ssl/ca-key.pem \
--etcd-cafile=/opt/etcd/ssl/ca.pem \
--etcd-certfile=/opt/etcd/ssl/server.pem \
--etcd-keyfile=/opt/etcd/ssl/server-key.pem"
EOF
# systemd管理apiserver
cat << EOF | tee /usr/lib/systemd/system/kube-apiserver.service
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/kubernetes/kubernetes
[Service]
EnvironmentFile=-/opt/kubernetes/cfg/kube-apiserver
ExecStart=/opt/kubernetes/bin/kube-apiserver \$KUBE_APISERVER_OPTS
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 启动
systemctl daemon-reload
systemctl enable kube-apiserver
systemctl restart kube-apiserver
三 部署scheduler组件
1 | # 创建schduler配置文件 |
四 部署controller-manager组件
1 | # 创建controller-manager配置文件 |
五 所有组件都已经启动成功,通过kubectl工具查看当前集群组件状态
1 | /opt/kubernetes/bin/kubectl get cs |